package concurso.logica;

import java.io.Serializable;
import java.util.ArrayList;
import concurso.logica.DataEvaluaciones;
import concurso.logica.excepciones.EvaluacionesException;
public abstract class Participante implements Serializable {
	
	
	private static final long serialVersionUID = 1L;
	
	private String nombreArtistico;
	private String nombreCompleto;
	private int edad;
	private String especialidad;
	private double puntos; 
	private boolean esCandidato;
	private Evaluaciones evaluacionesJueces;



	public void setEvaluacionesJueces(Evaluaciones evaJue) {
		this.evaluacionesJueces = evaJue;
	}

	public Participante(String nomArt, String nomCom, int eda, String esp) {
		nombreArtistico = nomArt;
		nombreCompleto = nomCom;
		edad = eda;
		especialidad = esp;
		puntos = 0;
		esCandidato = false;
		evaluacionesJueces = new Evaluaciones();
	}
	
	public String getNombreArtistico(){
		return nombreArtistico;	}
	
	public String getNombreCompleto(){
		return nombreCompleto;	
	}
	
	public int getEdad(){
		return edad;	
	}
	
	public String getEspecialidad(){
		return especialidad;	
	}
	
	public double getPuntos(){
		return puntos;	
	}
	
	public boolean getEsCandidato(){
		return esCandidato;	
	}
	
	public abstract String getTipo();
	
	public void setNombreArtistico(String nomArt){
		this.nombreArtistico = nomArt;	
	}
	
	public void setNombreCompleto(String nomCom){
		this.nombreCompleto = nomCom;	
	}
	
	public void setEdad(int eda){
		this.edad = eda;	
	}
	
	public void setEspecialidad(String esp){
		this.especialidad = esp;	
	}
	
	public void setPuntos(double pun){
		this.puntos = pun;	
	}
	
	public void setEsCandidato(boolean esCan){
		this.esCandidato = esCan;	
	}
	
	public void Votar(){
		this.puntos+= 1;
	}
		
	public DataParticipante getDataParticipante (){//retorna un DataParticipante para que sea utilizado por la fachada
		DataParticipante datPar = new DataParticipante (this.nombreArtistico, this.nombreCompleto, this.edad,
														this.especialidad, this.esCandidato, this.evaluacionesJueces);
		return datPar;
	}
		
	public DataParticipante2 getDataParticipante2 (){//retorna un DataParticipante2 para que sea utilizado por la fachada
		DataParticipante2 datPar2 = new DataParticipante2 (this.nombreArtistico, this.edad, this.especialidad);
		return datPar2;
	}
	
	public DataParticipante8 getDataParticipante8 (){//retorna un DataParticipante8 para que sea utilizado por la fachada
		DataParticipante8 datPar8 = new DataParticipante8 (this.nombreArtistico, this.edad, this.puntos);
		return datPar8;
	}
																
		
	public Evaluaciones getEvaluacionesJueces(){
		return this.evaluacionesJueces;
	}
	
	public int getPuntosjueces(){//retorna el total de puntuaciones de los jueces
		int punTot = 0;
		for (Evaluacion eva: this.getEvaluacionesJueces().getEvaluaciones()){
			punTot += eva.getNota();
		}
		return punTot;
	}
	
/*	public DataEvaluaciones getDataEvaluaciones(){
		DataEvaluaciones datEvs = new DataEvaluaciones (this.evaluacionesJueces);
		return datEvs;
		}*/
	
	
	public  abstract DataParticipante3 getDataParticipante3();
		
	public void insertarEvaluacion (Evaluacion eva) throws EvaluacionesException{
		this.evaluacionesJueces.insertarEvaluacion(eva);
	}

}

